import React from 'react';

interface LazyLoadOptions<T> {
  component: React.ComponentType<T>;
  promises: Promise<any>[];
}

/**
 * 通用的组件懒加载方法
 * @param options 配置选项
 * @param options.component 要加载的组件
 * @param options.promises 需要等待的 Promise 数组
 * @returns 懒加载的组件
 */
export function lazyLoad<T>({
  component: Component,
  promises,
}: LazyLoadOptions<T>) {
  return React.lazy(async () => {
    try {
      // 等待所有 Promise 完成
      const resolvedData = await Promise.all(promises);
      // 返回组件和解析后的数据
      return {
        default: props => <Component {...props} initialData={resolvedData} />,
      };
    } catch (error) {
      console.error('组件懒加载失败:', error);
      throw error;
    }
  });
}
